﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RN.Entidades;
using CAD.DAO;
using System.Data;
namespace RN.Componentes
{
    public class CSubfamilias
    {
        #region DMLS
        public static bool Insertar(Subfamilias objProxy)
        {
            ValidationException x = new ValidationException();
            if (string.IsNullOrEmpty(objProxy.SNOMBRE1))
                x.AgregarError("Ingrese el nombre de la subfamilia");
            if (string.IsNullOrEmpty(objProxy.SDESCRIPCION1))
                x.AgregarError("Ingrese la Descripcion");
            if (x.Cantidad > 0)
                throw x;

            DAOSubfamilia daoProxy = new DAOSubfamilia();
            return daoProxy.Insertar(objProxy.SNOMBRE1, objProxy.SDESCRIPCION1, objProxy.Lfamilias_id.LFAMILIA_ID1, objProxy.ICONCURRENCIA1) > 0;
        }
        public static bool Actualizar(Subfamilias objProxy)
        {
            ValidationException x = new ValidationException();
            if (objProxy.LSUBFAMILIAS1 <= 0)
                x.AgregarError("Ingrese el código");

            if (string.IsNullOrEmpty(objProxy.SNOMBRE1))
                x.AgregarError("Ingrese el nombre de la subfamilia");
            if (string.IsNullOrEmpty(objProxy.SDESCRIPCION1))
                x.AgregarError("Ingrese la Descripcion");
            if (x.Cantidad > 0)
                throw x;

            DAOSubfamilia daoProxy = new DAOSubfamilia();
            return daoProxy.Actualizar(objProxy.LSUBFAMILIAS1, objProxy.SNOMBRE1, objProxy.SDESCRIPCION1, objProxy.Lfamilias_id.LFAMILIA_ID1, objProxy.ICONCURRENCIA1);

        }
        public static bool Eliminar(int LSUBFAMILIAS1)
        {
            ValidationException x = new ValidationException();
            if (LSUBFAMILIAS1 <= 0)
                x.AgregarError("Ingrese el código");

            if (x.Cantidad > 0)
                throw x;

            DAOSubfamilia daoProxy = new DAOSubfamilia();
            return daoProxy.Eliminar(LSUBFAMILIAS1);
        }
        #endregion
        #region Selects
        public static List<Subfamilias> Traer()
        {
            DAOSubfamilia daoProxy = new DAOSubfamilia();
            DataSet dtsProxy = daoProxy.TraerSUBFAMILIA();
            return CargarLista(dtsProxy.Tables[0]);
        }
        public static Subfamilias TraerXId(int id)
        {
            DAOSubfamilia daoProxy = new DAOSubfamilia();
            DataSet dtsProxy = daoProxy.TraerSUBFAMILIAXId(id);


            return Cargar(dtsProxy.Tables[0].Rows[0]);
        }
        public static Subfamilias TraerXNombre(string nombre)
        {
            DAOSubfamilia daoProxy = new DAOSubfamilia();
            DataSet dtsProxy = daoProxy.TraerSUBFAMILIAXNombre(nombre);


            return Cargar(dtsProxy.Tables[0].Rows[0]);
        }

        public static List<Subfamilias> TraerXfAMILIA(int LFAMILIAS1)
        {
            DAOSubfamilia daoProxy = new DAOSubfamilia();
            DataSet dtsProxy = daoProxy.TraerXFAMILIA(LFAMILIAS1);


            return CargarLista(dtsProxy.Tables[0]);
        }
        #endregion
        #region Metodos Privados
        private static List<Subfamilias> CargarLista(DataTable tabla)
        {
            List<Subfamilias> lstProxy = new List<Subfamilias>();

            foreach (DataRow fila in tabla.Rows)
            {
                lstProxy.Add(Cargar(fila));
            }
            return lstProxy;
        }
        private static Subfamilias Cargar(DataRow fila)
        {
            Subfamilias objProxy = new Subfamilias();
            objProxy.LSUBFAMILIAS1 = Convert.ToInt32(fila["LSUBFAMILIAS_ID"]);
            objProxy.SNOMBRE1 = fila["SNOMBRE"].ToString();
            objProxy.SDESCRIPCION1 = fila["SDESCIPCION_DSC"].ToString();
            objProxy.Lfamilias_id.LFAMILIA_ID1 = Convert.ToInt32(fila["LFAMILIAS_ID"]);
            objProxy.ICONCURRENCIA1 = Convert.ToInt32(fila["ICONCURRENCIA"]);
            return objProxy;
        }
        #endregion
    }
}
